home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / e_to_l / edsspell / edsspell.pas < prev    next >
Pascal/Delphi Source File  |  1996-09-15  |  30KB  |  880 lines

  1. (* EDSSPELL.PAS - Copyright (c) 1995-1996, Eminent Domain Software *)
  2.  
  3. unit EDSSpell;
  4.   {-Component Wrapper for Spell Dialog}
  5.  
  6. {$I SpellDef.PAS}
  7.   {-defines for EDSSpell component}
  8.  
  9. interface
  10. uses
  11.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  12.   Forms, Dialogs, StdCtrls, Buttons, Menus, ExtCtrls,
  13.   SpellGbl, AbsBuff, AbsSpell, LexDCT, WPSpell,
  14. {$IFNDEF Shareware}
  15.   MSSpell, W96Spell,
  16. {$ENDIF}
  17. {$IFDEF SupportOrpheus}
  18.   OvcEdit, OvcEF, OvcBuff,
  19. {$ENDIF}
  20. {$IFDEF SupportTXText}
  21.   TXBuff, Tx4vb,
  22. {$ENDIF}
  23. {$IFDEF SupportWPTools}
  24.   WPRich, WPBuff,
  25. {$ENDIF}
  26.   SpellInt;
  27.  
  28. type
  29.   {Dialog Component Wrapper}
  30.   TSpellDlg = class (TComponent)
  31.   private
  32.     FPath:           TFileName;
  33.     FDictionary:     TFileName;
  34.     FDicType:        TLanguages;
  35.     FLanguage:       TLanguages;
  36.     FDialogType:     TDialogTypes;
  37.     FSpellWin:       TAbsSpellDialog;
  38.     FSuggestions:    Byte;
  39.     FIcons:          TAccentSet;
  40.     FAutoSuggest:    Boolean;
  41.     FAutoShift:      Boolean;
  42.     FHelpContext:    THelpContext;
  43.     FUserDCT:        TFileName;
  44.     {Lists of words}
  45.     FSkipList:       TStringList;  {List of words to skip}
  46.     FReplaceList:    TStringList;  {List of words to auto-replace}
  47.     FReplacer:       TStringList;  {List of words to replace above list with}
  48.     FReplaceNum:     integer;      {index of word in replace list}
  49.     procedure   SetDicType (NewType: TLanguages);
  50.       {-sets the new dictionary type}
  51.     procedure   SetLanguage (NewLanguage: TLanguages);
  52.       {-sets the language for the label}
  53.     procedure   SetDialogType (NewType: TDialogTypes);
  54.       {-sets the dailog type}
  55.     procedure   SetSuggestions (Num: Byte);
  56.       {-sets the number of suggestions}
  57.     procedure   SetIconSet (IconSet: TAccentSet);
  58.       {-sets the icons to be visible}
  59.     procedure   SetHelpContext (HelpID: THelpContext);
  60.       {-sets the help context for the spell component}
  61.     function    CheckBuffer (ABuffer: TAbsBuffer): Integer;
  62.       {-checks the buffer}
  63.   public
  64.     constructor Create (AOwner: TComponent); override;
  65.       {-initializes object}
  66.     destructor  Destroy;  override;
  67.       {-destroys object}
  68.     function    Open: Boolean;
  69.       {-opens the dictionary}
  70.     procedure   Close;
  71.       {-closes the dictionary and removes the dialog}
  72.     procedure   ClearLists;
  73.       {-clears the SkipList, ReplaceList, and Replacer List}
  74.     procedure   MoveDialog (YPos: Integer);
  75.       {-moves the dialog so that it does not highlighted word}
  76.     procedure   EnableSkipButtons;
  77.       {-enables the skip buttons on the dialog}
  78.     procedure   DisableSkipButtons;
  79.       {-disables the skip buttons on the dialog}
  80.     procedure   Show;
  81.       {-displays the dialog}
  82.     function    CheckWord (var AWord: String): Integer;
  83.       {-checks the word (see AbsSpell for CheckWord results)}
  84.     function    CheckCustomEdit (ACustomEdit: TCustomEdit): Integer;
  85.       {-checks a custom edit control}
  86.     function    CheckMemo (AMemo: TMemo): Integer;
  87.       {-checks the memo}
  88. (*  function    CheckDBMemo (ADBMemo: TDBMemo): Integer; *)
  89. (*     -use CheckCustomEdit instead:                     *)
  90. (*          CheckCustomEdit (DBMemo1);                   *)
  91.     function    CheckEdit (AnEdit: TEdit): Integer;
  92.       {-checks a TEdit control}
  93. {$IFDEF SupportOrpheus}
  94.     function    CheckOvcEditor (AnOvcEdit: TOvcCustomEditor): Integer;
  95.       {-checks an Orpheus editor component}
  96.     function    CheckOvcField (AnOvcField: TOvcBaseEntryField): Integer;
  97.       {-checks an Orpheus field component}
  98. {$ENDIF}
  99. {$IFDEF SupportTXText}
  100.     function    CheckTXControl (ATXControl: TTextControl): Integer;
  101.       {-checks a TXTextControl}
  102. {$ENDIF}
  103. {$IFDEF SupportWPTools}
  104.     function    CheckWPText (AWPRichText: TWPRichText): Integer;
  105.       {-checks a WPTools RTF Component}
  106. {$ENDIF}
  107.     function    CheckAllFields (AForm: TForm; DisplayMsg: Boolean): Integer;
  108.       {-checks all of the edit fields on the form}
  109.  
  110.     {---- Word Counters ----}
  111.     procedure   CustomEdit_WordCount (ACustomEdit: TCustomEdit; var NumWords, UniqueWords: Longint);
  112.       {-returns the number of words in a TCustomEdit}
  113.     procedure   Memo_WordCount (AMemo: TMemo; var NumWords, UniqueWords: Longint);
  114.       {-returns the number of words in a TMemo}
  115.     procedure   Edit_WordCount (AnEdit: TEdit; var NumWords, UniqueWords: Longint);
  116.       {-returns the number of words in a TEdit}
  117. {$IFDEF SupportOrpheus}
  118.     procedure   OvcEdit_WordCount (AnOvcEdit: TOvcCustomEditor;
  119.                                    var NumWords, UniqueWords: Longint);
  120.       {-returns the number of words in a TOvcCustomEditor}
  121.     procedure   OvcField_WordCount (AnOvcField: TOvcBaseEntryField;
  122.                                     var NumWords, UniqueWords: Longint);
  123.       {-returns the number of words in a TOvcBaseEntryField}
  124. {$ENDIF}
  125. {$IFDEF SupportTXText}
  126.     procedure   TXText_WordCount (ATXControl: TTextControl;
  127.                                   var NumWords, UniqueWords: Longint);
  128.       {-returns the number of words in a TX Text-Control}
  129. {$ENDIF}
  130.  
  131.  
  132.     {---- Internal Routines (No Dialog) ----}
  133.     function    OpenDictionary: Boolean;
  134.       {-opens the dictionary}
  135.     procedure   CloseDictionary;
  136.       {-closes the dictionary}
  137.     function    AddWord (AWord: string): Boolean;
  138.       {-adds a word to the dictionary, returns TRUE if successful}
  139.     function    InDictionary (AWord: String): Boolean;
  140.       {-checks to see if the word is in the dictionary (no dialog)}
  141.     function    SuggestWords (AWord: String; NumToList: Byte): TStringList;
  142.       {-suggests words}
  143.     {Lists of words}
  144.     property SkipList:      TStringList read FSkipList write FSkipList;
  145.     property ReplaceList:   TStringList read FReplaceList write FReplaceList;
  146.     property Replacer:      TStringList read FReplacer write FReplacer;
  147.   published
  148.     property AccentIcons:    TAccentSet read FIcons write SetIconSet;
  149.     property AutoShift:      Boolean read FAutoShift write FAutoShift;
  150.     property AutoSuggest:    Boolean read FAutoSuggest write FAutoSuggest;
  151.     property DialogStyle:    TDialogTypes read FDialogType write SetDialogType;
  152.     property DictionaryName: TFileName read FDictionary write FDictionary;
  153.     property DictionaryPath: TFileName read FPath write FPath;
  154.     property DictionaryType: TLanguages read FDicType write SetDicType;
  155.     property LabelLanguage:  TLanguages read FLanguage write SetLanguage;
  156.     property Suggestions:    Byte read FSuggestions write SetSuggestions;
  157.     property HelpContext:    THelpContext read FHelpContext write SetHelpContext;
  158.     property UserDictionary: TFileName read FUserDCT write FUserDCT;
  159.   end;  { TSpellDlg }
  160.  
  161. procedure Register;
  162.  
  163. implementation
  164.  
  165. {---- TSpellDlg.Wrapper ----}
  166. constructor TSpellDlg.Create (AOwner: TComponent);
  167. begin
  168.   inherited Create (AOwner);
  169.   FSpellWin      := nil;
  170.   FDialogType    := dtWordPerfect;
  171.   FIcons         := [];
  172.   FAutoShift     := TRUE;
  173.   FAutoSuggest   := FALSE;
  174.   FDictionary    := '';
  175.   FPath          := 'APPLICATIONPATH';
  176.   FUserDCT       := 'USERDCT.TXT';
  177.   FDicType       := lgEnglish;
  178.   FLanguage      := lgEnglish;
  179.   SetDialogType (FDialogType);
  180.   Suggestions    := 10;
  181. end; { TSpellDlg.Create }
  182.  
  183. destructor TSpellDlg.Destroy;
  184. begin
  185.   CloseDictionary;
  186.   {FSpellWin is automatically destroyed by parent}
  187.   {FSpellWin.Destroy implied}
  188.   inherited Destroy;
  189. end;  { TSpellDlg.Destroy }
  190.  
  191. procedure TSpellDlg.SetDicType (NewType: TLanguages);
  192.   {-sets the new dictionary type}
  193. begin
  194.   FDicType := NewType;
  195.   case FDicType of
  196.     lgSpanish: Include (FIcons, acSpanish);
  197.   end;  { case }
  198. end;  { TSpellDlg.SetDicType }
  199.  
  200. procedure TSpellDlg.SetLanguage (NewLanguage: TLanguages);
  201.   {-sets the language for the label}
  202. var
  203.   LangMesg: string;
  204. begin
  205.   FLanguage := NewLanguage;
  206.   if FSpellWin <> nil then
  207.     FSpellWin.Language := FLanguage;
  208. end;  { TSpellDlg.SetLanguage }
  209.  
  210. procedure TSpellDlg.SetDialogType (NewType: TDialogTypes);
  211.   {-sets the dailog type}
  212. var
  213.   dtMesg: string;
  214. begin
  215.   if csDesigning in ComponentState the